package com.alex.enumfunction;

import java.util.function.Function;

/**
 * 红绿灯状态枚举类 - 函数式实现方式
 * 核心思想：用 Function 函数式接口替代传统的字段存储方式
 */
public enum TrafficLightAlex008 {
    // 定义红绿灯三种状态，每个状态通过 Lambda 表达式实现从编号到描述的映射
    RED(s -> "红灯"),      // 相当于传入"1"返回"红灯"
    YELLOW(s -> "黄灯"),   // 相当于传入"2"返回"黄灯"
    GREEN(s -> "绿灯");    // 相当于传入"3"返回"绿灯"

    // 声明一个 Function 类型的成员变量，用于存储状态转换函数
    // Function<String, String> 表示输入String类型，返回String类型
    private final Function<String, String> trafficLight;

    // 构造方法，接收一个Function对象
    TrafficLightAlex008(Function<String, String> trafficLight) {
        this.trafficLight = trafficLight;
    }

    // 获取当前状态的描述
    public String getDescription(String code) {
        return this.trafficLight.apply(code);
    }


}

